<?php

/**
 * Проверяет правильность заполнения поля численным значением.
 *
 */
class Kernel_Validator_Captcha extends Kernel_Validator_Abstract {

    /**
     * Сообщение об ошибке, которое бросает валидатор.
     *
     * @var string
     */
    public $message = 'VALIDATION_ERROR_CAPTCHA';

    /**
     * Проверяет правильность указанного значения
     *
     * @param   mixed   $value
     * @return  boolean
     */
    protected function _isValid($value) {
        $value = strtolower($value);
        if ($this->_compare($value)) {
            Kernel_Filter_Captcha::store($value);
            return true;
        } else {
            Kernel_Filter_Captcha::clear();
            return false;
        }
    }

    /**
     * Сравнивает значение с эталонным.
     *
     * @param   string  $value
     * @return  string
     */
    private function _compare($value) {
        return isset($_SESSION['captcha-string'])
            && $_SESSION['captcha-string'] == $value;
    }
}
